package view;

/**
 * @author calandreli
 *
 */

/*
 Apenas o numero do Processo é editavel!

 */
import Utilitarios.TamanhoMaximoTextField;
import dao.ArquivaDAO;
import dao.ProcessoDAO;
import dao.SetorDAO;
import dao.TramitacaoDAO;

import java.awt.Component;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Font;
import java.beans.PropertyVetoException;

import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.plaf.basic.BasicInternalFrameUI;
import javax.swing.table.DefaultTableModel;
import model.Arquivar;
import model.Processo;
import model.Setor;
import model.Tramitacao;
import org.netbeans.lib.awtextra.AbsoluteLayout;

//import net.sf.jasperreports.engine.JRException;
public class frameTramitar extends javax.swing.JInternalFrame {

    private DefaultTableModel modelo = new DefaultTableModel() {
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    };
    private DefaultComboBoxModel modeljcomboboxSetor = new DefaultComboBoxModel() {
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    };
    String opcao = "";
    public int inutil;
    //Processo geral, para ser setado quando houver a busca do processo
    Processo pGeral;

    public frameTramitar() {
        initComponents();

        tabela();
        montaListaSetor();

        //Tira as barras de todos os lados da janela
        ((BasicInternalFrameUI) this.getUI()).setNorthPane(null);
        ((BasicInternalFrameUI) this.getUI()).setSouthPane(null);
        ((BasicInternalFrameUI) this.getUI()).setWestPane(null);
        ((BasicInternalFrameUI) this.getUI()).setEastPane(null);

        jtAnteriorSetor.setDocument(new TamanhoMaximoTextField(50));

        lbCodigo.setFont(new Font("Tahoma", Font.PLAIN, 11));
        lbSigla.setFont(new Font("Tahoma", Font.PLAIN, 11));
        lbDescricao.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbIncluir.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbAlterar.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbSalvar.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbCancelar.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbExcluir.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbSair.setFont(new Font("Tahoma", Font.PLAIN, 11));

        lbCodigo.setFont(new Font("Tahoma", Font.PLAIN, 11));
        lbSigla1.setFont(new Font("Tahoma", Font.PLAIN, 11));
        lbSigla.setFont(new Font("Tahoma", Font.PLAIN, 11));

        lbDescricao.setFont(new Font("Tahoma", Font.PLAIN, 11));

        ajusta_botoes();
        jcTramitacaoSetor.setEnabled(false);
        jcTramitacaoSetor.setSelectedIndex(-1);

        exibePainelCadastro(false);
        //Trava Botoes
        jtData.setEditable(false);
        jTinteressado.setEditable(false);
        jtAssunto.setEditable(false);
        jtAnteriorSetor.setEditable(false);

        //  monta_jTUnidade();
        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(0, 0, false, false);
            //Atribui_Campos();
        }

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        panelCadastro = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTUnidade = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        lbCodigo = new javax.swing.JLabel();
        jtnumeroProcesso = new javax.swing.JTextField();
        lbSigla1 = new javax.swing.JLabel();
        jTinteressado = new javax.swing.JTextField();
        jtData = new javax.swing.JFormattedTextField();
        lbSigla2 = new javax.swing.JLabel();
        lbSigla3 = new javax.swing.JLabel();
        jtAssunto = new javax.swing.JTextField();
        jtAnteriorSetor = new javax.swing.JTextField();
        lbSigla = new javax.swing.JLabel();
        jToggleButton2 = new javax.swing.JToggleButton();
        jPanel5 = new javax.swing.JPanel();
        jToggleButton1 = new javax.swing.JToggleButton();
        jLabel2 = new javax.swing.JLabel();
        lbDescricao = new javax.swing.JLabel();
        jcTramitacaoSetor = new javax.swing.JComboBox();
        btSair = new javax.swing.JButton();

        setClosable(true);
        setTitle("Gerenciamento de Setor");
        setToolTipText("");
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        jLabel1.setText("Tramitar Processo");
        getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 10, 560, 30));

        panelCadastro.setBorder(javax.swing.BorderFactory.createTitledBorder("Ultimas Tramitações"));
        panelCadastro.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jTUnidade.setBackground(new java.awt.Color(204, 204, 204));
        jTUnidade.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        jTUnidade.setToolTipText("Registro Cadastrados");
        jTUnidade.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTUnidadeMouseClicked(evt);
            }
        });
        jTUnidade.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTUnidadeKeyReleased(evt);
            }
        });
        jScrollPane1.setViewportView(jTUnidade);

        panelCadastro.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 30, 480, 300));

        getContentPane().add(panelCadastro, new org.netbeans.lib.awtextra.AbsoluteConstraints(620, 60, 510, 350));
        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 610, 660, 10));
        getContentPane().add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 0, 20, 550));

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Processo"));
        jPanel3.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lbCodigo.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbCodigo.setText("Chave| Nº do Processo  :");
        lbCodigo.setFocusable(false);
        jPanel3.add(lbCodigo, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 30, 130, 20));

        jtnumeroProcesso.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jtnumeroProcesso.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jtnumeroProcesso.setToolTipText("Código do Setor");
        jtnumeroProcesso.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jtnumeroProcesso.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jtnumeroProcessoActionPerformed(evt);
            }
        });
        jtnumeroProcesso.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jtnumeroProcessoKeyTyped(evt);
            }
        });
        jPanel3.add(jtnumeroProcesso, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 50, 130, -1));

        lbSigla1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbSigla1.setText("Interresado:");
        jPanel3.add(lbSigla1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 80, 80, 20));

        jTinteressado.setBackground(new java.awt.Color(204, 204, 204));
        jTinteressado.setHorizontalAlignment(javax.swing.JTextField.LEFT);
        jTinteressado.setToolTipText("Sigla Do Organograma");
        jTinteressado.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTinteressadoActionPerformed(evt);
            }
        });
        jPanel3.add(jTinteressado, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 100, 290, -1));

        jtData.setBackground(new java.awt.Color(204, 204, 204));
        try {
            jtData.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##/##/####")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }
        jtData.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jtData.setToolTipText("Data de Cadastro do Produto no Inventário");
        jtData.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
        jtData.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jtDataActionPerformed(evt);
            }
        });
        jtData.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jtDataKeyTyped(evt);
            }
        });
        jPanel3.add(jtData, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 50, 100, -1));

        lbSigla2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbSigla2.setText("Data da Tramitação:");
        jPanel3.add(lbSigla2, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 30, 120, 20));

        lbSigla3.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbSigla3.setText("Assunto");
        jPanel3.add(lbSigla3, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 80, 80, 20));

        jtAssunto.setBackground(new java.awt.Color(204, 204, 204));
        jtAssunto.setHorizontalAlignment(javax.swing.JTextField.LEFT);
        jtAssunto.setToolTipText("Sigla do Setor");
        jPanel3.add(jtAssunto, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 100, 170, -1));

        jtAnteriorSetor.setBackground(new java.awt.Color(204, 204, 204));
        jtAnteriorSetor.setHorizontalAlignment(javax.swing.JTextField.LEFT);
        jtAnteriorSetor.setToolTipText("Responsável pelo Setor");
        jtAnteriorSetor.setAutoscrolls(false);
        jtAnteriorSetor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jtAnteriorSetorActionPerformed(evt);
            }
        });
        jPanel3.add(jtAnteriorSetor, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 150, 160, -1));

        lbSigla.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbSigla.setText("Ult. Tramitação:");
        jPanel3.add(lbSigla, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 130, 110, 20));

        jToggleButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1400784436_search_magnifying_glass_find.png"))); // NOI18N
        jToggleButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton2ActionPerformed(evt);
            }
        });
        jPanel3.add(jToggleButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 50, 30, 25));

        getContentPane().add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 60, 560, 220));

        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Destino"));
        jPanel5.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jToggleButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1400863558_519644-145_Action.png"))); // NOI18N
        jToggleButton1.setToolTipText("");
        jToggleButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton1ActionPerformed(evt);
            }
        });
        jPanel5.add(jToggleButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(470, 30, 60, 50));
        jToggleButton1.getAccessibleContext().setAccessibleName("Tramitar");

        jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel2.setText("Tramitar");
        jPanel5.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(470, 80, 60, 20));

        lbDescricao.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbDescricao.setText("Destino:");
        jPanel5.add(lbDescricao, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 30, 80, 20));

        jcTramitacaoSetor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jcTramitacaoSetorActionPerformed(evt);
            }
        });
        jPanel5.add(jcTramitacaoSetor, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 50, 410, -1));

        getContentPane().add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 290, 560, 120));

        btSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/logout_user_login_account-3222.png"))); // NOI18N
        btSair.setToolTipText("Fechar o Gerenciamento de Tipo");
        btSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btSairActionPerformed(evt);
            }
        });
        getContentPane().add(btSair, new org.netbeans.lib.awtextra.AbsoluteConstraints(550, 430, -1, -1));

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jtAnteriorSetorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtAnteriorSetorActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jtAnteriorSetorActionPerformed

    private void jtnumeroProcessoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtnumeroProcessoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jtnumeroProcessoActionPerformed

    private void jTinteressadoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTinteressadoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTinteressadoActionPerformed

    private void jtDataActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtDataActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jtDataActionPerformed

    private void jtDataKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jtDataKeyTyped
        String caracteres = "0987654321";
        if (!caracteres.contains(evt.getKeyChar() + "")) {
            evt.consume();
        }
    }//GEN-LAST:event_jtDataKeyTyped

    private void jTUnidadeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTUnidadeMouseClicked
        if (opcao.equals("")) {
            int linhaAtual;
            linhaAtual = jTUnidade.getSelectedRow();
            jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
            //Atribui_Campos();
        }
    }//GEN-LAST:event_jTUnidadeMouseClicked

    private void jTUnidadeKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTUnidadeKeyReleased
        int linhaAtual;
        linhaAtual = jTUnidade.getSelectedRow();
        jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
        //Atribui_Campos();
    }//GEN-LAST:event_jTUnidadeKeyReleased

    private void jcTramitacaoSetorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcTramitacaoSetorActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jcTramitacaoSetorActionPerformed

    private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton1ActionPerformed
        opcao = "incluir";
        gravaRegistro();
    }//GEN-LAST:event_jToggleButton1ActionPerformed

    private void jtnumeroProcessoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jtnumeroProcessoKeyTyped
        String caracteres = "0987654321-,./";
        if (!caracteres.contains(evt.getKeyChar() + "")) {
            evt.consume();
        }
    }//GEN-LAST:event_jtnumeroProcessoKeyTyped

    private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton2ActionPerformed
        try {
            jToggleButton2.setSelected(true);
            if (verificaProcesso() == true) {
                buscarProcesso();
                monta_jTUnidade();
            } else {
                limpaCampos();
            }
            jToggleButton2.setSelected(false);

        } catch (Exception e) {
            jToggleButton2.setSelected(false);
        }
    }//GEN-LAST:event_jToggleButton2ActionPerformed

    private void btSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSairActionPerformed
        saiTela();
    }//GEN-LAST:event_btSairActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btSair;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTUnidade;
    private javax.swing.JTextField jTinteressado;
    private javax.swing.JToggleButton jToggleButton1;
    private javax.swing.JToggleButton jToggleButton2;
    private javax.swing.JComboBox jcTramitacaoSetor;
    private javax.swing.JTextField jtAnteriorSetor;
    private javax.swing.JTextField jtAssunto;
    private javax.swing.JFormattedTextField jtData;
    private javax.swing.JTextField jtnumeroProcesso;
    private javax.swing.JLabel lbCodigo;
    private javax.swing.JLabel lbDescricao;
    private javax.swing.JLabel lbSigla;
    private javax.swing.JLabel lbSigla1;
    private javax.swing.JLabel lbSigla2;
    private javax.swing.JLabel lbSigla3;
    private javax.swing.JPanel panelCadastro;
    // End of variables declaration//GEN-END:variables

    public void saiTela() {
        frameTramitar.this.dispose();
    }

    public void ajustaCursor(int tipo) {
        Cursor cursor;

        if (tipo == 0) {
            cursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
        } else {
            cursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
        }

        setCursor(cursor);

    }

    public void ajusta_botoes() {
        if (opcao.equals("")) {

//            btCancelar.setEnabled(false);
//            lbSalvar.setEnabled(false);
//            lbCancelar.setEnabled(false);
//            lbIncluir.setEnabled(true);
//            lbAlterar.setEnabled(true);
//            lbExcluir.setEnabled(true);
        } else {

//            btCancelar.setEnabled(true);
//            lbSalvar.setEnabled(true);
//            lbCancelar.setEnabled(true);
//            lbIncluir.setEnabled(false);
//            lbAlterar.setEnabled(false);
//            lbExcluir.setEnabled(false);
        }
    }

    public void tabela() {
        jTUnidade.setModel(modelo);

        modelo.addColumn("De");
        modelo.addColumn("Para");
        modelo.addColumn("Data");

        jTUnidade.getColumnModel().getColumn(0).setPreferredWidth(25);
        jTUnidade.getColumnModel().getColumn(1).setPreferredWidth(20);
        jTUnidade.getColumnModel().getColumn(2).setPreferredWidth(20);

        //codigo para esconder uma coluna na JTable
        //Esconder alguma coluna: No Caso a Primeira Coluna
//        jTUnidade.getColumnModel().getColumn(0).setMinWidth(0);
//        jTUnidade.getColumnModel().getColumn(0).setPreferredWidth(0);
//        jTUnidade.getColumnModel().getColumn(0).setMaxWidth(0);
    }

    private void monta_jTUnidade() {
//      Fachada f = new Fachada();

        TramitacaoDAO udao = new TramitacaoDAO();

        List<Tramitacao> lista = new ArrayList<Tramitacao>();

        SimpleDateFormat dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
        modelo.setNumRows(0);
        lista = udao.pesquisaTramitacao(pGeral.getId_Processo());
        for (int i = 0; i < lista.size(); i++) {
            modelo.addRow(new Object[]{lista.get(i).getSetor(),
                lista.get(i).getSetorReceb(),
                dataFormatada.format(lista.get(i).getDataEnca().getTime())});
        }
    }

//    private void Atribui_Campos() {
//        jtnumeroProcesso.setText((String) jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 0).toString());
//        jTinteressado.setText((String) jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 2));
//        jcTramitacaoSetor.getModel().setSelectedItem(jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 1));
//        jtAssunto.setText((String) jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 3));
//        jtAnteriorSetor.setText((String) jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 4));
//    }
    public void exibePainelCadastro(boolean val) {
        //organiza os paineis
        panelCadastro.setVisible(!val);
        //painel da tabela
        jScrollPane1.setVisible(!val);

        //organiza os botões
    }

    private void novoRegistro() {

        exibePainelCadastro(true);

        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount() - 1;
        jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
        opcao = "incluir";
        jTUnidade.setEnabled(false);
        ajusta_botoes();
        //Deixar os registros em branco
        jtnumeroProcesso.setText(null);
        jtAnteriorSetor.setText(null);
        jcTramitacaoSetor.setSelectedIndex(-1);
        jtAssunto.setText(null);
        jTinteressado.setText(null);

    }

    private boolean validarCampos() {

        if ((jtnumeroProcesso.getText().trim().equals("")) && (jtAnteriorSetor.getText().trim().equals(""))) {
            JOptionPane.showMessageDialog(null, "Processo não adicionado. Verifique!!!");
            jtAssunto.requestFocus();
            return false;
        } else if ((jcTramitacaoSetor == null)) {
            JOptionPane.showMessageDialog(null, "Adicione um Setor de Destino!");
            jcTramitacaoSetor.requestFocus();
            return false;
        } else {
            String[] siglaSetor = jcTramitacaoSetor.getSelectedItem().toString().split(" - ");
            if (siglaSetor[0].toString().equals(fPrincipal.nomeSetor)) {
                JOptionPane.showMessageDialog(null, "Tramitação para o próprio Setor é Inválida!");
                jtAnteriorSetor.requestFocus();
                return false;
            }
        }

        return true;
    }

    private void alteraRegistro() {

        exibePainelCadastro(true);

        opcao = "alterar";
        jTUnidade.setEnabled(false);
        ajusta_botoes();

        jtAnteriorSetor.setEditable(true);
        jcTramitacaoSetor.setEditable(true);
        jtAnteriorSetor.requestFocus();
    }

    private void gravaRegistro() {

        String mens = "";
        int valor = 0;
        Tramitacao t = new Tramitacao();
        TramitacaoDAO tdao = new TramitacaoDAO();

        while (validarCampos() == true) {

            t.setProcesso(pGeral);

            String[] dataEncString = jtData.getText().split("/");
            java.util.Calendar dataEnc = new GregorianCalendar(TimeZone.getTimeZone("GMT-3"), new Locale("pt_BR"));
            dataEnc.set(java.util.Calendar.YEAR, Integer.parseInt(dataEncString[2]));//aqui seta o ano  
            dataEnc.set(java.util.Calendar.MONTH, Integer.parseInt(dataEncString[1]) - 1);//aqui seta o mes  
            dataEnc.set(java.util.Calendar.DATE, Integer.parseInt(dataEncString[0]));//aqui seta o dia  

            t.setDataEnca(dataEnc);

            //arrumar essa parte e tirar esse comentario
            t.setSetor(fPrincipal.setorUsuario);
            t.setSetorReceb((Setor) jcTramitacaoSetor.getSelectedItem());

            if (opcao.equals("incluir")) {
                tdao.incluir(t);
                valor = 1;

                exibePainelCadastro(false);

                mens = "Tramitação Efetuada com Sucesso!";
            }

            if (valor > 0) {
                JOptionPane.showMessageDialog(null, mens);
            } else {
                JOptionPane.showMessageDialog(null, "Não foi possivel " + opcao + " o registro. Verifique!!!");
                int linhaAtual;
                linhaAtual = jTUnidade.getRowCount();
                if (linhaAtual > 0) {
                    jTUnidade.changeSelection(0, 0, false, false);

                }
            }

            opcao = "";
            jTUnidade.setEnabled(true);
            //jtnumeroProcesso.setEditable(false);
            monta_jTUnidade();
            ajusta_botoes();
            limpaCampos();

            break;
        }
        //até aqui vou ter q arrumar ainda
        return;
    }

    private void cancelaRegistro() {

        exibePainelCadastro(false);

        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(0, 0, false, false);
            //Atribui_Campos();
        }

        opcao = "";
        jtnumeroProcesso.setEditable(false);
        jTUnidade.setEnabled(true);
        ajusta_botoes();
    }

    private void excluiRegistro() {
        int valor = 0;

        SetorDAO f = new SetorDAO();
        Setor s = new Setor();

        s.setId_setor(Integer.parseInt(jtnumeroProcesso.getText()));

        String nome = "Tem Certeza em Deletar Este Registro de Setor?  a- " + jtAnteriorSetor.getText();
        int opc = JOptionPane.showConfirmDialog(null, nome, "Exclusão", JOptionPane.YES_NO_OPTION);

        if (opc == JOptionPane.YES_OPTION) {
            f.remover2(s);
            valor = 1;

            if (valor > 0) {
                JOptionPane.showMessageDialog(null, "Registro excluido com sucesso!!!");
            } else {
                JOptionPane.showMessageDialog(null, "Erro na Exclusão - Verifique!!!");
            }
        }
        monta_jTUnidade();
        cancelaRegistro();
    }

    private void montaListaSetor() {
        modeljcomboboxSetor.removeAllElements();
        SetorDAO sdao = new SetorDAO();

        ArrayList<Setor> lista3 = new ArrayList<Setor>();
        lista3 = sdao.findAll2();

        for (Setor s : lista3) {
            modeljcomboboxSetor.addElement(s);
        }

        jcTramitacaoSetor.setModel(modeljcomboboxSetor);
    }

    public void limpaCampos() {
        jToggleButton2.setSelected(false);
        jtData.setText("");
        jtAssunto.setText("");
        jTinteressado.setText("");
        jtAnteriorSetor.setText("");
        jcTramitacaoSetor.setEnabled(false);
        jcTramitacaoSetor.setSelectedIndex(-1);
        jToggleButton1.setEnabled(false);
    }

    private void buscarProcesso() {
        DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        Date date = new Date();
        ProcessoDAO pdao = new ProcessoDAO();
        Processo p = new Processo();
        TramitacaoDAO tdao = new TramitacaoDAO();
        List<Tramitacao> lt = new ArrayList<Tramitacao>();

        try {

            if (jtnumeroProcesso.getText().length() == 9) {
                String numArray[] = new String[2];
                numArray[0] = jtnumeroProcesso.getText().substring(0, 5);
                numArray[1] = jtnumeroProcesso.getText().substring(5, 9);
                String nFinal = numArray[1] + numArray[0];
                
            

                lt = tdao.pesquisaTramitacaoNumero(nFinal);
            } else {
                lt = tdao.pesquisaTramitacao(Integer.parseInt(jtnumeroProcesso.getText()));
            }
            //se tiver vazio quer dizer que o processo ainda nao foi tramitado e só pode ser tramitado pelo setor de protocolo
            if (lt.isEmpty()) {
                jtAnteriorSetor.setText("Protocolo");
                //senão verifica se o setor em que se encontra o processo é igual ao do funcionario logado    
            } else {
                //separa o nome do setor pelo " - " para poder fazer a verificação
                String[] anteriorSetor = ((lt.get(lt.size() - 1).getSetorReceb().toString().split(" - ")));
                //se for igual ao setor do funcionario ele pega o processo
                if (anteriorSetor[0].equals(fPrincipal.nomeSetor)) {
                    jtAnteriorSetor.setText(lt.get(lt.size() - 1).getSetorReceb().toString());
                    //senao diz que o processo não foi encontrado e sai da busca
                } else {
                    JOptionPane.showMessageDialog(null, "Processo não Encontrado!");
                    return;
                }
            }
            if (jtnumeroProcesso.getText().length() == 9) {
                String numArray[] = new String[2];
                numArray[0] = jtnumeroProcesso.getText().substring(0, 5);
                numArray[1] = jtnumeroProcesso.getText().substring(5, 9);
                String nFinal = numArray[1] + numArray[0];
                p = pdao.pesquisaProcessoSingleNumero(nFinal);
            } else {
                p = pdao.pesquisaProcessoSingle(Integer.parseInt(jtnumeroProcesso.getText()));
            }

            jtData.setText(dateFormat.format(date).toString());
            jtAssunto.setText(p.getAssunto().getAssunto());
            jTinteressado.setText(p.getInteressado());

            jcTramitacaoSetor.setEnabled(true);
            jToggleButton1.setEnabled(true);
            jToggleButton2.setSelected(false);

            pGeral = p;

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Processo não encontrado!");
            limpaCampos();
        }

    }

    public boolean verificaProcesso() {
        List<Arquivar> al = new ArrayList<Arquivar>();
        ArquivaDAO adao = new ArquivaDAO();

        List<Tramitacao> tl = new ArrayList<Tramitacao>();
        TramitacaoDAO tdao = new TramitacaoDAO();

        if (jtnumeroProcesso.getText().length() == 9) {
            String numArray[] = new String[2];
            numArray[0] = jtnumeroProcesso.getText().substring(0, 5);
            numArray[1] = jtnumeroProcesso.getText().substring(5, 9);
            String nFinal = numArray[1] + numArray[0];


            al = adao.pesquisaPorProcessoPeloNumero(nFinal);

        } else {
            al = adao.pesquisaPorProcesso(Integer.parseInt(jtnumeroProcesso.getText()));
        }

        if (al.isEmpty()) {
            tl = tdao.pesquisaTramitacaoSetor(fPrincipal.setorUsuario.getSigla());
            //Verifica se o processo não esta no setor do usuario logado
            if (tl.isEmpty()) {
                if (fPrincipal.nomeSetor.equals("Protocolo")) {
                    return true;
                } else {
                    JOptionPane.showMessageDialog(null, "Processo em outro Setor!");
                    return false;
                }
            } else {
                return true;
            }

        } else {
            JOptionPane.showMessageDialog(null, "Este processo está arquivado!");
            return false;
        }

    }
}
